<?php


/**
 * La classe news manager se charge d'envoyer les news � la page web
 *
 * @author Guigui
 */

require_once('mysql.php');
require_once('news.class.php');

class news_manager {
    
    var $news; //tableau de News
    var $pitch; //ex: si pitch = 5, les news seront affichées par groupe de 5 sur le mur d'actualit�s
    var $total_news; //nombre total de news en BDD
    var $bdd; //objet mysql
    
    public function __construct() {
        //$this->news=array();
        $this->pitch=5;  //Valeur du pitch à changer ici, dans le constructeur
        $this->index=0;
        $this->bdd= new Mysql();
        
        $this->total_news=$this->get_total_news_from_db();
        
        
    }
    
    private function fill_news_array($page){
        $this->news = array();
        $bdd=$this->bdd;
       $query = "SELECT * FROM news ORDER BY `date_creation` DESC LIMIT ";
       //$total=$this->get_total_news_from_db();

       $query.=0+($this->pitch*($page-1));
       
       $query.=",";
  
       $query.=$this->pitch;
       
       
      // echo '$query='.$query;
        if(!$result = $bdd->Send_Query($query)){
           die ($bdd->return_error()); 
        }else{
            while($row = $bdd -> get_array($result)) {
		$this->news[] = new News($row['id'],$row['id_author'],$row['title'], $row['content'],$row['date_creation']);
            }
        }
    }
    
    //Parcourt le tableau de news et renvoie les objets News serialisés en JSON
    private function news_array_to_JSON(){
        $JSON='';
        
        $JSON.='[';
         for ($i=0;$i<count($this->news);$i++){
            $JSON.=$this->news[$i]->getJSON();
            if($i!=count($this->news)-1)
                   $JSON.=','; 
        }
        $JSON.=']';
        
        return $JSON;
    }
    
    private function news_array_to_HTML(){
        $str='';
        $i;
        for ($i=0;$i<count($this->news);$i++){
            $str.=$this->news[$i]->getHTML();
        }
        
        return $str;
    }
    
    
    private function get_total_news_from_db(){
         $bdd=$this->bdd;
         $bdd->connect($bdd->host,$bdd->user,$bdd->pass,$bdd->base);
         $query = "SELECT COUNT(*) as total FROM news";
        if(!$result = $bdd->Send_Query($query)){
           die ($bdd->return_error());
           return 0;
        }else{
            $row = $bdd -> get_array($result);
            return intval($row['total']);
            }
    }
    
    public function get_total_news(){
        $this->total_news = $this->get_total_news_from_db();
        return $this->total_news;
    }

    public function get_next_news($page=1,$format='JSON'){
        /*
         * On remplit le tableau avec les news à afficher
         * puis on envoie le contenu au format JSON ou HTML
         */
        
        $this->fill_news_array($page);
        
        if($format=='JSON')
           return $this->news_array_to_JSON();
        else if($format=='HTML'){
            $str=$this->news_array_to_HTML ();
            $nb_pages = intval($this->get_total_news_from_db()/$this->pitch) + 1;
            
            $link="<br/><br/><br/><span class='link_footpage'>";
            
            if($page>1)//s'il y'a une page avant la page courante on affiche un lien de retour
                $link.="<a href='index.php?page=accueil&num_page=".($page-1)."'> &lt;&lt;</a>&nbsp;&nbsp;&nbsp;&nbsp;";
                
            $link.="Page ".$page."/".$nb_pages;
            
            if($page<$nb_pages)//s'il y a une page après on affiche un lien vers la page suivante
                $link.="&nbsp;&nbsp;&nbsp;&nbsp;<a href='index.php?page=accueil&num_page=".($page+1)."'> &gt;&gt;</a>";
            $link.="</span>";
            
            $str.=$link;
            return $str;
        }
       
        
    }

    
}

?>
